﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>

//int main()
//{
//	/*int a = 0;
//	int b = 0;
//	while (1)
//	{
//		scanf("%d %d", &a, &b);
//		printf("%d\n", a % b);
//	}*/
//
//  
//    int value = 0;
//    scanf("%d", &value);
//    int index = 0;//计数器
//    int sum = 0;
//    while (value != 0)
//    {
//        value /= 10;
//        index++;
//    }
//    printf("%d\n", index);
//
//	return 0;
//}

//int main() {
//    int a = 0;
//    while (~scanf("%d", &a))
//    {
//        if (a >= 60)
//            printf("Pass\n");
//        else
//            printf("Fail\n");
//    }
//    return 0;
//}

//int main()
//{
//	int a = 0;
//	int b = scanf("%d", &a);
//	printf("%d", b);
//	return 0;
//}

//int main()
//{
//	int i = 5;
//	printf("%d", ~1);
//	return 0;
//}

//int main() {
//    int arr[10] = { '\0' };
//    int i = 0;
//    while (i <= 9)
//    {
//        if(i == 9)
//            scanf("%d", &arr[i]);
//        else
//            scanf("%d ", &arr[i]);
//        i++;
//    }
//        return 0;
//}

//int main()
//{
//	int a = 15 % 10;
//	printf("%d\n", a);
//	return 0;
//}

//int main() {
//    float a = 0.0;//快递重量
//    char b = '\0';//是否加急
//    int many = 0;//价钱
//    scanf("%f %c", &a, &b);
//    int c = a * 10;
//    if (c % 10 != 0)
//    {
//        c = c / 10 + 1;
//    }
//    else {
//        c = a;
//    }
//    many = c * 1 + 20 - 1;
//    if (b == 'y')
//        many += 5;
//    printf("%d\n", many);
//    return 0;
//}

//int main() {
//    int a = 0;//代表科目
//    int s = 0;//出版社
//    int c = 0;//出版社编号
//    int d = 0;//识别码
//    int i = 0;
//    int sum = 0;
//    int num = 0;
//    int value = 1;
//    long int b = 0;
//    scanf("%d-%d-%d-%d", &a, &s, &c, &d);
//    b = s * 100000 + c;
//    if (a != 0)
//    {
//        b = b + a * 100000000;
//        value = 0;
//    }
//    for (i = 9; i > value; i--)
//    {
//        num = b % 10;
//        b = b / 10;
//        sum += num * i;
//    }
//    if (sum % 11 == d)
//        printf("Right\n");
//    else
//        printf("%d-%d-%d-%d", a, s, c, sum % 11);
//    return 0;
//}

//int main() {
//    int a = 0;//代表科目
//    int s = 0;//出版社
//    int c = 0;//出版社编号
//    int d = 0;//识别码
//    int i = 0;
//    int sum = 0;
//    int num = 0;
//    int value = 1;
//    long int b = 0;
//    scanf("%d-%d-%d-%d", &a, &s, &c, &d);
//    if (d == 0)
//        d = 10;
//    b = s * 100000 + c;
//    if (a != 0)
//    {
//        b = b + a * 100000000;
//        value = 0;
//    }
//    for (i = 9; i > value; i--)
//    {
//        num = b % 10;
//        b = b / 10;
//        sum += num * i;
//    }
//
//    if (sum % 11 == d)
//    {
//        printf("Right\n");
//    }
//    else if (sum % 11 == 10)
//    {
//        printf("%d-%d-%d-%c", a, s, c, 'X');
//    }
//    else
//        printf("%d-%d-%d-%d", a, s, c, sum % 11);
//    return 0;
//}

//int main()
//{
//	double a =(double)92.0;
//	double b = (double)22.3;
//	double c = (double)0.0f;
//	c = a * b;
//	printf("%.4lf", c);
//	return 0;
//}

//int main() {
//    double a = (double)0.0f;//操作数1
//    char ch = '\0';//运算符
//    double b = (double)0.0f;//操作数2
//    double value = (double)0.0f;
//    scanf("%lf%c%lf", &a, &ch, &b);
//    if (ch == '+' || ch == '-' || ch == '*' || ch == '/')
//    {
//        if (b == 0)
//        {
//            printf("Wrong!Division by zero!");
//            return 0;
//        }
//        if (ch == '+')
//            value = a + b;
//        else if (ch == '-')
//            value = a - b;
//        else if (ch == '*')
//            value = a * b;
//        else if (ch == '/')
//            value = a / b;
//        printf("%.4lf%c%.4lf=%.4lf", a, ch, b, value);
//    }
//    else
//        printf("Invalid operation!");
//    return 0;
//}

//int main() {
//    int i = 0;
//    int m = 0;
//    int index = 0;//计数器
//    for (i = 100; i < 1000; i++)
//    {
//        for (m = 100; m < i; m++)
//        {
//            if (i == m)
//            {
//                index++;
//            }
//            if (i % m == 0)
//                break;
//
//        }
//        if (i % m != 0)
//            index++;
//    }
//    printf("%d\n", index);
//    return 0;
//}

//int my_vlog(int x)
//{
//    int n = 0;
//    for (n = 2; n <= x-1; n++)
//    {
//        if (x % n == 0)
//            return 0;
//    }
//    //if (x % n != 0)
//        return 1;
//}
//
//int main()
//{
//    int i = 0;
//    int index = 0;//计数器
//    int b = 0;
//    for (i = 100; i < 1000; i++)
//    {
//        b = my_vlog(i);
//        if (b == 1)
//            index++;
//    }
//    printf("%d\n", index);
//    return 0;
//}

//int main()
//{
//    int i = 0;
//    int index = 0;//计数器
//    int b = 0;
//    int n = 0;
//    for (i = 100; i < 1000; i++)
//    {
//        for (n = 2; n <= i-2; n++)
//        {
//            if (i % n == 0)
//                break;
//        }
//        if (i % n != 0)
//            index++;
//    }
//    printf("%d\n", index);
//    return 0;
//}

//int main()
//{
//	int n = 0;
//	int index = 0;
//	int i = 1;
//	for (i = 0; i < 10; i++)
//	{
//		for (n = 0; n < 10; n++)
//		{
//			index++;
//		}
//	}
//	printf("%d\n", index);
//	return 0;
//}
//
//int main()
//{
//	int a = 5;
//	printf("%d", ~a);
//	return 0;
//}

//int main() {
//	int i, j = 0, n;
//	double sum = 0, ject = 0;
//	scanf("%d", &n);
//	for (i = 1; i <= 2 * n - 1; i++) {
//		if (i % 2 != 0) {
//			j++;
//			if (j % 2 == 0) {
//				//sum += (double)1/i*(-1);
//				ject += i * (-1);
//			}
//			else {
//				//sum += (double)1/i;
//				ject += i;
//			}
//			sum += (double)1 / ject;
//		}
//	}
//
//	printf("%.3lf", sum);
//	return 0;
//}
//
//int main() {
//	int n = 0;
//	double sum = (double)1.0f;
//	scanf("%d", &n);
//	int i = 0;
//	int m = 0;
//	int value = 0;//状态
//	int b = 0;
//	for (i = 1; i <= n; i++)
//	{
//		if (i % 2 != 0)
//		{
//			if (value == 0)
//			{
//				m += i;
//			}
//			else
//			{
//				m -= i;
//			}
//		}
//		b = 1 / m;
//		sum += b;
//	}
//	printf("%.3lf", sum);
//	return 0;
//}

#include <stdio.h>
//输入一个整数n,计算 1+1/（1-3）+1/（1-3+5）+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的值
//1  1-1/3  1-1/3+1/5...1-1/3+1/5-...
//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int tmp = 0;
//    double sum = 0;
//    int flag = 1;
//    for (int i = 1; i <= n; i++) {
//        tmp += flag * (2 * i - 1);
//        sum += 1.0 / tmp;
//        flag = -flag;
//    }
//    printf("%.3lf\n", sum);
//    return 0;
//}

//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int sum = 0;
//    while (n != 0);
//    {
//        sum += n % 10;
//        n = n / 10;
//    }
//    printf("%d\n", sum);
//    return 0;
//}

//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int index = 0;
//    while (n != 1)
//    {
//        if (n % 2 == 0)
//        {
//            n /= 2;
//            index++;
//        }
//        else
//        {
//            n = n *3 + 1;
//            index++;
//        }
//    }
//    printf("%d\n", index);
//    return 0;
//}

//int main() {
//    int i = 0;
//    int index = 0;
//    int x = 0;
//    int y = 0;
//    int m = 0;//余数
//    int n = 0;//除数
//    int z = 0;
//    for (i = 10000; i <= 99999; i++)
//    {
//        for (x = 10, y = 10000; x <= 10000; x *= 10, y /= 10)
//        {
//
//            while (i != 0)
//            {
//                z = i;
//                m = z % x;
//                n = z / y;
//                index += m * n;
//                i = i / y;
//            }
//
//        }
//        if (index == i)
//            printf("%d ", i);
//    }
//    return 0;
//}

//int main() {
//    int arr[7] = { '\0' };
//    int i = 0;
//    int sum = 0;
//    int max = arr[0];
//    int min = arr[0];
//    for (i = 0; i < 7; i++)
//    {
//        if (i == 6)
//            scanf("%d", &arr[i]);
//        else
//            scanf("%d ", &arr[i]);
//        sum += arr[i];//总成绩
//
//    }
//    for (i = 0; i < 7; i++)
//    {
//        if (arr[i] > max)
//        {
//            max = arr[i];
//        }
//        if (min == 0 || arr[i] < min)
//        {
//            min = arr[i];
//        }
//    }
//    printf("%d\n", min);
//    printf("%d\n", max);
//    sum = sum - max - min;
//    printf("%d\n", sum);
//    printf("%.2f\n", sum / 5.0);
//
//    return 0;
//}
//int main()
//{
//    int n = 0;
//    int arr[7];
//    while (scanf("%d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6]) != EOF)
//    {
//        int max = 0;
//        int min = 0;
//        int sub = 0;
//        int i = 0;
//        for (i = 0; i < 7; i++)
//        {
//            if (arr[i] > max)
//            {
//                max = arr[i];
//            }
//            if (min == 0 || arr[i] < min)
//            {
//                min = arr[i];
//            }
//            sub += arr[i];
//        }
//        printf("%d\n", min);
//        printf("%d\n", max);
//        printf("%d\n", sub);
//        printf("%.2f\n", (sub - max - min) / 5.0);
//    }
//    return 0;
//}



//int main() {
//    int n = 0;
//    int m = 0;
//    long int sum = 0;
//    int i = 1;
//    scanf("%d", &n);
//    while (n >= 1)
//    {
//        m = n % 6;
//        n = n / 6;
//        sum = sum + m * i;
//        i = i * 10;
//
//    }
//    printf("%ld", sum);
//    return 0;
//}


//int main()
//{
//	int a = 0;
//	int b = 0;
//	while (1)
//	{
//		scanf("%d %d", &a, &b);
//		printf("%d\n", a % b);
//	}
//}c

//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    int b = 0;
//
//    for (i = 1; i <= n; i++)
//    {
//        b = i;//不影响初始值
//        int sum = 0;
//        while (b)
//        {
//            sum = sum * 10 + b % 10;
//            b = b / 10;
//        }
//        if (sum == i)
//            printf("%d\n", sum);
//    }
//    return 0;
//}

//int main() {
//    int n = 0;
//    int i = 0;
//    while (~scanf("%d", &n))
//    {
//        while (i < n)
//        {
//            printf("*");
//            i++;
//        }
//        i = 0;
//        printf("\n");
//    }
//
//    return 0;
//}

//int main()
//{
//    int n = 0;
//    while (~scanf("%d", &n))
//    {
//        for (int x = 0; x < n; x++)
//        {
//            for (int y = 0; y < n; y++)
//            {
//                if (y < n - x - 1) printf("  ");
//                else printf("* ");
//            }
//            printf("\n");
//        }
//
//    }
//    return 0;
//}

//int get_prime(int x)
//{
//	int n = 0;
//	for (n = 2; n < x - 1; n++)
//	{
//		if (x % n == 0)
//			return 0;
//	}
//	return 1;
//}
//
//int main()
//{
//	int i = 0;
//	int a = 0;
//	for (i = 100; i <= 200; i++)
//	{
//		a = get_prime(i);
//		if (a == 1)
//			printf("%d ", i);
//	}
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int index = 0;
//	for (i = 1; i <= n; i++)
//	{
//		if (i * i == n)
//		{
//			index = 1;
//			break;
//		}
//	}
//	if (index == 1)
//		printf("%d\n", i);
//	return 0;
//}
#include <math.h>
//void main(void)
//{
//	int    ix = -4, iy;
//	long   lx = -41567L, ly;
//	double dx = -3.141593, dy;
//
//	iy = abs(ix);
//	printf("The absolute value of %d is %d\n", ix, iy);
//
//	ly = labs(lx);
//	printf("The absolute value of %ld is %ld\n", lx, ly);
//
//	dy = fabs(dx);
//	printf("The absolute value of %f is %f\n", dx, dy);
//}

#include <stdio.h>
//int main()
//{
//	int a[10] = { 9,12,3,4,5,6,7,8,9,10 };
//	int* p = &a;
//	/*printf("%d\n", *p);
//	printf("%d\n", ++(*p));*/
//	printf("%d\n", ++(*p));
//	printf("%p\n", p);
//	printf("%d\n", ++*p);
//	printf("%p\n", ++p);
//	printf("%d\n", *p++);
//	return 0;
//}
//int fun(int* a, int* b)
//{
//	if (*a > *b)
//		return a;
//	else
//		return b;
//}
//
//int main()
//{
//	int x = 7, y = 8, *max;
//	max = fun(&x, &y);
//	printf("%d", *max);
//	return 0;
//}

//int main()
//{
//	int a[10] = { '\0' };
//	a[0] = 8;
//	printf("%d\n", a[0]);
//	printf("%p\n", a+1);
//	return 0;
//}

//二维数组

//int main()
//{
	/*int arr[3][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };
	printf("%p\n", arr);
	printf("%p\n", arr[0] + 4);*/
	//int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	/*printf("%p\n", arr[0]+1);
	printf("%p\n", arr[1]+2);
	printf("%d\n", arr[1][2]);
	printf("%d\n", arr[1][2]+2);*/
	//printf("%p\n", arr[0]);
	/*printf("%p\n", &arr[0][0]);
	printf("%p\n", &arr[0][1]);
	printf("%p\n", &arr[0][2]);*/
	/*printf("%p\n", arr[1]);
	printf("%p\n", arr[2]);*/
	/*printf("%p\n", arr);
	printf("%p\n", arr + 1);
	printf("%p\n", arr + 2);*/
	//return 0;
//}
#/*include <string.h>
int main()
{
	char ch[] = "abcdefg";
	int a = strlen(ch);
	int b = sizeof(ch);
	printf("%d\n%d\n", a, b);
	return 0;
}*/

//#define f (x) (x*x)
//#define f (x) x*x
//
//int main()
//{
//
//	return 0;
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int c = Add(a, b);
//	printf("%d\n", c);
//	return 0;
//}

//int main()
//{
//	/*char a[] = { 'a','b','c' };
//	printf("%d\n", strlen(a));
//	printf("%d\n", sizeof(a));*/
//	printf("%d\n",strlen("\\tOP\t\65\""));
//	printf("%d\n",strlen("\\"));
//	printf("%d\n",strlen("\XFF"));
//	return 0;
//}

//int main()
//{
//	int a = 11, b = 2;
//	do
//	{
//		a /= b++;
//	} while (a > b);
//
//	printf("%d\n%d",a,b);
//	return 0;
//}

//int main()
//{
//	/*char t[] = "12345";
//	printf("%d\n", sizeof(t));
//	printf("%d\n", strlen(t));*/
//	/*double a = (double)3.14;
//	char b = 'a';
//	float c = 3.14;*/
//	int i, j;
//	int a = 0;;
//	for (i = 5; i; i--)
//		for (j = 0; j < 4; j++) 
//		{ 
//			a++;
//		}
//	printf("%d\n", a);
//	return 0;
//}
#include <string.h>
//typedef unsigned int uint;
//#define N 10

//int main()
//{
	//char str1[] = "string", str2[5];
	//strcpy(str1, "Hello");
	//str1 = "Hello";
	//printf("%s\n", str1);
	//printf("%s\n", str2);
	//unsigned long d = 1000;
	/*int s, k;
	for (s = 1, k = 2; k < 5; k++)
		s += k;
	printf("%d\n", s);*/
	/*float a[10] = { '\0' };
	int i = 0;
	for (i = 0; i < 10; i++)
		scanf("%f", &a[i]);
	for (i = 0; i < 10; i++)
		printf("%f", a[i]);*/
	/*int a, b, c, d, e;
	a = b = c = d = 5;
	printf("%d %d %d %d", a, b, c, d);*/
	/*int  a, b, c, d, i, j, k;
	a = 10; b = c = d = 5; i = j = k = 0;
	do
	k++;
	while (a > d++);
	printf("%d %d %d %d %d %d", b, c, d, i, j, k);*/
	/*int a, b[10], c, i = 0;
	printf("输入一个整数\n");
	scanf("%d", &a);
	while (a != 0)
	{
		c = a % 2;
			a = a / 2;
			b[i] = c;
		i++;
	}
	for (; i > 0; i--) printf("%d", b[i - 1]);*/
	//printf("%d\n", N);

	//return 0;//42
//}

//int main()
//{
//	/*int a[] = { 1,2,3,4,5,6,7,8,9,10 }, * p;
//	p = a;*/
//	return 0;
//}

//int main()
//{
	/*int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int c = a % b;
	printf("%d", c);*/
	/*char a = '1', b = '2';
	printf("%c,", b++);
	printf("%d\n", b - a);*/
	/*char* sp = "whc";
	printf("%s\n", sp);*/
	/*char x[8] = { 8,7,6,5,0,0 }, * s;
	s = x + 1;
	printf("%d\n", s[0]);*/
	/*char a, b;
	a = getchar();
		scanf("%d", &b);
		a = a - 'A' + '0';
	b = b * 2;
	printf("%c %c\n", a, b);*/
	/*int a = 3, b = 4, c = 5, t = 99;
	if (b < a && a < c) { t = a; a = c; c = t; }
	if (a < c && b < c) { t = b; b = a; a = t; }
	printf("%d %d %d\n", a, b, c);*/
	/*char a[] = "I am a boy.", b[20];
	int i;
	for (i = 0; a[i] != '\0'; i++)
	{
		b[i] = a[i];
	}
	printf("%s\n", b);*/
	/*int a = 1, b;
	for (b = 1; b <= 10; b++)
	{
		if (a >= 8) break;
		if (a % 2 == 1)


		{
			a += 5;
			continue;
		}
		a -= 3;
	}
	printf("%d\n", b);*/

	/*char *a = "abcdefg";
	printf("%s", a);*/
	/*int i = 0;
	for (i = 0; i < 10; i++)
		if (i <= 5) break;
	printf("%d\n", i);*/
	/*char str[] = "China";
	printf("%d\n", strlen(str));*/

	/*int a = 10;
	float f = 3.14;
	double i = 1.11;
	float x = a + f + i;
	printf("%f\n", x);*/

//	int a, b;
//	float x;
//	a = 1, b = 2;
//	b++;
//	a = b = 5;
//	b = int(x);
//	return 0;
//}

//main()
//{
//	int a, s, n, count;
//	a = 2; s = 0; n = 1; count = 1;
//	while (count <= 7) { n = n * a; s = s + n; ++count; }
//	printf("s = % d ", s);
//}

//main()
//{
	/*int a [3][3] = { 1,3,5,7,9,11,13,15,17 }, sum = 0, i, j;
	for (i = 0; i < 3; i++)
		for (j = 0; j < 3; j++)
			if (i == j) sum = sum + a[j][i];
	printf("sum = % d\n", sum);*/
	/*int a[3][3] = { 1,3,5,7,9,11,13,15,17 }, sum = 0, i, j;
	printf("%p", a[0]);*/

	/*int n=0;
	n = (6 * 4, n + 6), n * 2;
	printf(" %d\n" ,n);

}*/

//int main()
//{
	/*int a = 0;
	char f = '\0';
	char ch = 5 + 9;
	scanf("%d%f", &a, &f);*/
	/*int a = 8;
	a -= a*a;
	printf("%d\n", a);
	a += a;
	printf("%d\n", a);*/
//	float f = 0.0;
//	scanf("%f", &f);
//	printf("%f\n", f);
//	return 0;
//}

//int main()
//{
	/*int a = 0;
	int b = 0;
	int c = (a = 2, b = 5, b++, a + b);
	printf("%d\n", c);*/
	/*int  a = 1 ,b = 3 ,c = 5 ,d = 4,x;
	if (a < b)
		if (c < d)x = 1;
		else
			if (a < c)
				if (b < d)x = 2;
				else    x = 3;
			else    x = 6;
	else    x = 7;
	printf("%d\n", x);*/
	
//	return 0;
//}

//int main()
//{
	/*int a[10] = { 10 * 1 };
	int b[] = { 0 };*/
	/*int x = 1, y = 2;
	x = x ^ y; 3;
	y = y ^ x; 1;
	x = x ^ y; 2;
	printf("%d %d\n", x, y);*/
	/*int a[][2] = { 1 ,2 ,3 ,4 };
	int a[2][] = { {1 ,2} ,{3 ,4} };err*/
	/*int u = 10;
	int s = 11;
	int t = 0;
	t = s;
	if (u)
		t = u;
	printf("%d\n", t);*/
	/*int x = 0;
	int y[10];
	printf("%p\n", &x);*/
	/*int a = 1, b = 2, c = 2,t;
	while (a < b < c)
	{
		t = a;
		a = b;
		b = t; 
		c--;
	}
	printf("%d %d %d", a, b, c);*/
	/*int    a = 1, b = 10;
	do
	{
		b -= a; a++;
	} while (b-- < 0);
	printf("a=%d,b=%d\n", a, b);

	return 0;
}*/

//fun(int   a, int b)
//{
//	if (a > b)    return(a);
//	else       return(b);
//}
//main()
//{
//	int    x = 3, y = 8, z = 6, r;
//	r = fun(fun(x, y), 2 * z);
//	printf("%d\n" , r);
//}

//int m = 13;
//int fun(int x ,int y)
//{
//	int m = 3;
//		return(x * y - m);
//}
//main()
//{
//	int a = 7, b = 5;
//	printf("%d\n", fun(a ,b)/m);
//}
//
//int main()
//{
	//int* p, m = 5, n;
	//p = &n;
	//printf("%p\n", p);
	//printf("%d\n", n);
	//printf("%d\n", *p);
	/*int x = 2, y = 3;
	int c = x & y;
	printf("%d\n", c);*/
	/*printf("%%d%d", 123);*/
	/*int m = 5, y = 2;
	int c = y += y -= m *= y;
	printf("%d\n", c);*/
//	int x = 2, y;
//	y = x + 5, x + y;
//	printf("%d\n", y);
//	printf("%d\n", 10 / 3 * 9 % 10 / 2);
//	return 0;
//}


//int main()
//{
	/*int n;
	int* p = &n;
	n = (6 * 4,n + 6), n * 2;
	printf("% d\n",n);*/
	//int a[10], * p;
	//p = a;
	//*(p + 10);
	//printf("%d\n", *(p+10));
	/*int x = 10, y = 9;
	int a, b, c;

	a = (--x == y++) ? --x : ++y;
	b = x++;
	c = y;
	printf("%d %d %d\n", a, b, c);*/
	//printf("%d\n", 1 ? (0 ? 3 : 2) : (10 ? 1 : 0));
//int main()
//{
//	/*int a[] = { 8 ,2 ,9 ,4 ,1 } , * p;
//	p = a;
//	* (p + 2) += 2,
//	printf("% d , % d ", * p , * (p + 2));*/
//
//	int x = 3;
//	switch(x)
//	{ 
//	case 1:
//	case 2:printf("x < 3\n");
//	case 3:printf("x = 3\n");
//	case 4:
//	case 5:printf("x>3\n");
//	default:printf("xunknow\n");
//	}
//
//	return 0;
//}

//int main()
//{
//	/*int arr[4][4] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
//	printf("%d\n", sizeof(arr) / sizeof(arr[0]));
//	printf("%d\n", sizeof(arr) / sizeof(arr[0][0]));*/
//	int arr[4][7] = { '\0'};
//	printf("%d\n", sizeof(arr) / sizeof(arr[0]));
//	int sz1 = sizeof(arr[0]) / sizeof(arr[0][0]);
//	printf("%d\n", sz1);
//	return 0;
//}
//#define N 5
//int main()
//{
	/*int a[4][3] = { 1,2,3,2,3,4,3,4,5,4,5,6 };
	printf("%d", a[3 - 1][0]);*/
	/*int intt = 0;
	int union1 = 0;*/
	/*char arr[] = "我是山上的大老虎";
	printf("%d\n", sizeof(arr));*/
	//printf("%d",(int)(11.0/3+0.5));
	//int arr[N];
	/*char arr[] = { 'h','e','a','b','e' };
	char arr1[] = "hello";
	printf("%d\n", sizeof(arr));
	printf("%d\n", strlen(arr));
	printf("%d\n", sizeof(arr1));
	printf("%d\n", strlen(arr1));
	return 0;
}*/

//int main()
//{
//	float a, b, c, t;
//	a = 3;
//	b = 7;
//	c = 1;
//	if (a > b)
//	{
//		t = a; a = b; b = t;
//	}
//	if (a > c)
//	{
//		t = a; a = c; c = t;
//	}
//	if (b > c)
//	{
//		t = b; b = c; c = t;
//	}
//	printf("%5.2f,%5.2f,%5.2f", a, b, c);
//	return 0;
//}


//int main()
//{
//	float a = 1.0f;
//	double b = (double)2.0;
//	printf("%f %lf", a, b);
//	return 0;
//}

//int main()
//{
//	int m;
//	scanf("%d", &m);
//	if (m >= 0)
//	{
//		if (m % 2 == 0)printf("%d is a positive even\n", m);
//		else         printf("%d is a positive odd\n", m);
//	}
//	else
//	{
//		if (m % 2 == 0)    printf("%d is a negative even\n", m);
//		else     printf("%d is a negative odd\n", m);
//	}
//}

//int main()
//{
//	char c;
//	while ((c = getchar()) != '$')
//	{
//		if ('A' <= c && c <= 'Z')    putchar(c);
//		else if ('a' <= c && c <= 'z')    putchar(c - 32);
//	}
//}


//int main()
//{
//	int x, y = 0;
//	for (x = 1; x <= 10; x++)
//	{
//		if (y >= 10)
//			break;
//		y = y + x;
//	}
//	printf(" % d % d", y, x);
//}


//int main()
//{
//	char ch;
//	ch = getchar();
//	switch (ch)
//	{
//	case    'A': printf(" % c", 'A');
//	case    'B': printf(" % c", 'B'); break;
//	default: printf(" % s\n", "other");
//	}
//}

//int main()
//{
//	int a = 10;
//	printf("%d\n", --a);
//	return 0;
//}

//int main()
//{
//	int y = 9;
//	for (; y > 0; y --)
//		if (y % 3 == 0)
//		{
//			printf("% d", --y);
//		}
//}

//int main()
//{
//	int i, sum = 0;    i = 1;
//	do { sum = sum + i; i++; } while (i <= 10);
//		printf(" % d", sum);
//}

//#define N 4
//int main()
//{
//	int i;
//	int x1 = 1, x2 = 2;
//	printf("\n");
//	for (i = 1; i <= N; i++)
//	{
//		printf("%4d%4d", x1, x2);
//		if (i % 2 == 0)
//			printf("\n");
//		x1 = x1 + x2;
//		x2 = x2 + x1;
//	}
//}

//int main()
//{
//	int    x, y;
//	for (x = 30, y = 0; x >= 10, y < 10; x--, y++)
//		x /= 2, y += 2;
//	printf("x = % d, y = % d\n", x, y);
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	for (a = 19, b = 9; a >= 10, b < 10; a--, b++)
//	{
//		printf("哈哈");
//	}
//	return 0;
//}

//#define N 4
//int main()
//{
//	int    i, j;
//	for (i = 1; i <= N; i++)
//	{
//		for (j = 1; j < i; j++)
//			printf(" ");
//		printf("*");
//		printf("\n");
//	}
//}

//int main()
//{
//	int      i, a[10];
//	for (i = 9; i >= 0; i--)
//		a[i] = 10 - i;
//	printf("%d%d%d", a[2], a[5], a[8]);
//}

//int main()
//{
//	int i, a[6];
//	for (i = 0; i < 6; i++)
//		a[i] = i;
//	for (i = 5; i >= 0; i--)
//		printf("%3d", a[i]);
//}

//int main()
//{
//	int i, k, a[10], p[3];
//	k = 5;
//	for (i = 0; i < 10;i++)
//		a[i] = i;
//	for (i = 0; i < 3; i++)
//		p[i] = a[i * (i + 1)];
//	for (i = 0;i < 3;i++)
//		k += p[i] * 2;
//	printf("%d\n", k);
// 
// 
//}

//int    m[3][3] = { {1},{2},{3} };
//int    n[3][3] = { 1,2 ,3 };
//int main()
//{
//	printf("% d, ", m[1][0] + n[0][0]);
//	printf("% d\n" , m[0][1] + n[1][0]);
//}

//int main()
//{
//	int i;
//	int x[3][3] = { 1,2,3,4,5,6,7,8,9 };
//	for (i = 1; i < 3; i++)
//		printf("%d    ", x[i][3 - i]);
//}

//int main()
//{
//	int n[3][3], i, j;
//		for (i = 0;i < 3;i++)
//		{
//			for (j = 0;j < 3;j++)
//			{
//				n[i][j] = i + j;
//				printf(" % d   ", n[i][j]);
//			}
//
//		}
//}
//int main()
//{
//	char diamond[][5] = { {' ',' ','*'},{' ','*',' ','*'},
//{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'} };
//	int i, j;
//	for (i = 0; i < 5; i++)
//	{
//		for (j = 0; j < 5; j++)
//			printf("% c", diamond[i][j]);
//		printf("\n");
//	}
//}


//结构体

//struct jia
//{
//	char namep[20];
//	int age;
//	char iphon[12];
//	int light;
//	char sex[5];
//};
//
//struct li
//{
//	struct jia p;
//	char riqi[20];
//	int ch;
//};
//
//void print1(struct jia* a)
//{
//	printf("%s %d %s %d %s\n", a->namep, a->age, a->iphon, a->light, a->sex);
//}
//
//void print11(struct jia a)
//{
//	printf("%s %d %s %d %s\n", a.namep, a.age, a.iphon, a.light, a.sex);
//}
//
//void print2(struct li* ss)
//{
//	printf("%s %d %s %d %s %s %d\n", ss->p.namep, ss->p.age, ss->p.iphon, ss->p.light, ss->p.sex, ss->riqi, ss->ch);
//}
//
//void print22(struct li ss)
//{
//	printf("%s %d %s %d %s %s %d\n", ss.p.namep, ss.p.age, ss.p.iphon, ss.p.light, ss.p.sex, ss.riqi, ss.ch);
//}
//
//int main()
//{
//	struct jia a = { "王浩",20,"17309339946",170,"男"};
//	struct li s = { {"意中人",20,"12309339948",165,"女"},"2024-3-13",22 };
//	printf("%s %d %s %d %s\n", a.namep, a.age, a.iphon, a.light,a.sex);
//	printf("%s %d %s %d %s %s %d\n", s.p.namep, s.p.age, s.p.iphon, s.p.light, s.p.sex, s.riqi, s.ch);
//
//	print1(&a);
//	print11(a);
//	print2(&s);
//	print22(s);
//	
//
//	return 0;
//}

//#define M 100 //#define不便于调试
//int main()
//{
//	int m = M;
//	return 0;
//}

//enum tian
//{
//	yi = 0,
//	er,
//	san,
//	si,
//	wu,
//	liu,
//	ri
//};
//
//int main()
//{
//	/*enum tian c = san;
//	c = 5;*/
//	int x = 2;
//	printf("%d\n", yi);
//	return 0;
//}
//union Un
//{
//	char arr[5];
//	//short a;
//};
//int main()
//{
//	printf("%d\n", sizeof(union Un));
//	return 0;
//}

//int main()
//{
//	int i, f[10];
//	f[0] = f[1] = 1;
//	for (i = 2; i < 10; i++)
//		f[i] = f[i - 2] + f[i - 1];
//	for (i = 0; i < 10; i++)
//	{
//		if (i % 4 == 0)
//			printf("\n");
//		printf("%d  ", f[i]);
//	}
//}

//func(int    b[])
//{
//	int    j;
//	for (j = 0; j < 4; j++)
//		b[j] = j;
//}
//int main()
//{
//	int    a[4], i;
//	func(a);
//	for (i = 0; i < 4; i++)
//		printf(" % 2d", a[i]);
//}

//int main()
//{
//	float fun(float x[]);
//	float ave, a[3] = { 4.5 ,2,4 };
//		ave = fun(a);
//	printf("ave=%7.2f", ave);
//}
//float fun(float x[])
//{
//	int j;
//	float aver = 1;
//for (j = 0; j < 3; j++)
//aver = x[j] * aver;
//return(aver);
//}

//int main()
//{
//	int a[2][3] = { {1,2,3},{4,5,6} };
//	int b[3][2], i, j;
//	for (i = 0; i <= 1; i++)
//	{
//		for (j = 0; j <= 2; j++)
//			b[j][i] = a[i][j];
//	}
//	for (i = 0; i <= 2; i++)
//	{
//		for (j = 0; j <= 1; j++)
//			printf("%5d", b[i][j]);
//	}
//}

//f(int    b[], int    n)
//{
//	int    i, r;
//	r = 1;
//	for (i = 0; i <= n; i++)
//		r = r * b[i];
//	return (r);
//}
//int main()
//{
//	int x, a[] = { 1,2,3,4,5,6,7,8,9 };
//	x = f(a, 3);
//	printf(" % d\n", x);
//}
//int age()
//{
//	static int a = 0, b = 0;
//	b++;
//	return b;
//}
//
//int main()
//{
//	int n = 0;
//	while (1)
//	{
//		n = age();
//		printf("%d\n", n); 
//	}
//	return 0;
//}

//int main()
//{
//	int j, k;
//	static int x[4][4], y[4][4];
//	for (j = 0; j < 4; j++)
//		for (k = j; k < 4; k++)
//			x[j][k] = j + k;
//	for (j = 0; j < 4; j++)
//		for (k = j; k < 4; k++)
//		{
//			y[k][j] = x[j][k];
//			printf("y[%d][%d]\n", k, j);
//		}
//
//	for (j = 0; j < 4; j++)
//		for (k = 0; k < 4; k++)
//			printf("%d,", y[j][k]);
//}
//int Sub(int a, int b)
//{
//	return (a - b);
//}
//int main()
//{
//	int    x, y, result = 0;
//	scanf("%d,%d", &x, &y);
//	result = Sub(x, y);
//	printf("result = %d\n", result);
//}

//int    min(int x, int y)
//{
//	int    m;
//	if (x > y)    m = x;
//		else                  m = y;
//	return(m);
//}
//int main() {
//	int    a = 3, b = 5, abmin;
//	abmin = min(a, b);
//	printf("min    is % d" ,abmin);
//}
//func(int x) {
//	x = 10;
//	printf(" % d, ", x);
//}
//int main()
//{
//	int x = 20;
//	func(x);
//	printf(" % d", x);
//}


//int m = 4;
//int func(int x, int y)
//{
//	int m = 1;
//	return(x * y - m);
//}
//int main()
//{
//	int a = 2, b = 3;
//	printf("%d\n", m);
//	printf("%d\n", func(a, b) / m);
//}


//int fun(int a, int b)
//
//{
//	if (a > b)      return(a);
//	else        return(b);
//}
//int main()
//{
//	int x = 15, y = 8, r;
//	r = fun(x, y);
//	printf("r=%d\n", r);
//}

//int fac(int n)
//{
//	int f = 1, i;
//	for (i = 1; i <= n; i++)
//		f = f * i;
//	return(f);
//}
//int main()
//{
//	int j, s;
//	scanf("%d", &j);
//	s = fac(j);
//	printf("%d!=%d\n", j, s);
//}

//unsigned fun6(unsigned num)
//{
//	unsigned k = 1;
//	do
//	{
//		k *= num % 10;
//		num /= 10;
//	} while (num);
//	return k;
//}
//int main()
//{
//	unsigned n = 26;
//	printf(" % d\n", fun6(n));
//}

//int max(int x, int y);
//int main()
//{
//	int a, b, c;
//	a = 7; b = 8;
//	c = max(a, b);
//	printf("Max is %d", c);
//
//}
//max(int x, int y)
//{
//	int z;
//	z = x > y ? x : y;
//	return(z);
//}

//int main()
//{
//	int x[] = { 10, 20, 30, 40, 50 };
//	int* p;
//	p = x;
//	printf(" % d", *(p + 2));
//}


//int main()
//{
//	char s[] = "abcdefg";
//	char* p;
//	p = s;
//	printf("ch = % c\n", *(p + 5));
//}

//int main()
//{
//	int a[] = { 1, 2, 3, 4, 5 };
//		int x, y, * p;
//		p = a;
//		x = *(p + 2);
//		printf("%d：%d \n", *p, x);
//}


//int main()
//{
//	int arr[] = { 30,25,20,15,10,5 }, * p = arr;
//	p++;
//	printf(" % d\n", *(p + 3));
//}

//int main()
//{
//	int a[] = { 1, 2, 3, 4, 5, 6 };
//	int    x, y, * p;
//	p = a;
//	x = *(p + 2);
//	y = *(p + 4);
//	printf(" * p = % d, x = % d, y = % d\n", *p, x, y);
//}
//void cheng(int arr[])
//{
//	printf("%d\n", arr[0]);
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	cheng(arr);
//	return 0;
//}

//int main()
//{
//	static char a[] = "Program", * ptr;
//	for (ptr = a; ptr < a + 7; ptr += 2)
//		putchar(*ptr);
//}
//
//char s[] = "ABCD";
//int main()
//{
//	char* p;
//	for (p = s; p < s + 4; p++)
//		printf(" % c % s\n", *p, p);
//}

//int main()
//{
//	char a[] = "wanghao";
//	char* p = a;
//	p++;
//	printf("%s\n",p);
//	return 0;
//}

//struct st
//{
//	int x;
//	int y;
//} a[2] = { 5, 7, 2, 9 };
//int main()
//{
//	printf("%d %d %d %d %d %d\n", a->x, a->y, a[0].x, a[0].y, a[1].x, a[1].y);
//	printf("%d\n", a[0].y * a[1].x);
//}

//int main()
//{
//	struct stu
//	{
//		int num;
//		char a[5];
//		float score;
//	}m = { 1234,"wang",89.5 };
//	printf("% d, % s, % f", m.num, m.a, m.score);
//}

//struct cmplx
//{
//	int x;
//	int y;
//} cnum[2] = { 1, 3, 2, 7 };
//int main()
//{
//	printf("% d\n", cnum[0].y * cnum[1].x);
//}

//struct abc
//{
//	int a, b, c;
//};
//int main()
//{
//	struct abc s[2] = { {1,2,3},{4,5,6} };
//	int t;
//	t = s[0].a + s[1].b;
//	printf("%d \n", t);
//}

//int main()
//{
//	char ch;
//	ch = getchar();
//	if ((ch >= 'A' && ch <= 'Z') || ch >= 'a' && ch <= 'z')
//		printf("It is an English character\n");
//	else if ((ch >= '1' && ch <= '9'))
//		printf("It is a digit character\n");
//	else if (ch == ' ')
//		printf("It is a space character\n");
//	else
//		printf("It is other character\n");
//}


//int main()
//{
//	int n = 1, i = 0, j = 0;
//	printf("input a integer, 0 for end\n");
//	
//	while (n) {
//		scanf("%d", &n);
//		if (n > 0) i = i + 1;
//		else if(n<0)   j = j + 1;
//	}
//	printf("i = % 4d, j = % 4d\n", i, j);
//	return 0;
//}

//int main()
//{
//	int a[10], i, x;
//	printf("input 10 integers：");
//	for (i = 0; i < 10; i++)
//		scanf("%d", &a[i]);
//	printf("input the number you want to find x：");
//	scanf("%d", &x);
//	for (i = 0; i < 10; i++)
//		if (a[i] == x)
//			break;
//	if (a[i] == x)
//		printf("the pos of x is： % d\n", i);
//	else printf("cannot find x！\n");
//	return 0;
//}


//int main()
//{
//	int    i, a[20], s, count;
//	s = count = 0;
//	for (i = 0;i < 20; i++)
//		scanf("%d", &a[i]);
//	for (i = 0; i < 20; i++)
//	{
//		if (a[i] < 0)        continue;
//		s += a[i];
//		count++;
//	}
//	printf("s = % d\t    count = % d\n", s, count);
//}

//int main() {
//	int i, index, k, n = 0, temp;
//	int a[10];	                    /*  定义 1 个数组 a，它有 10 个整型元素*/
//	printf("Enter n : ");
//
//	printf("Enter % d integers : ", n);
//	scanf("%d", &n);
//	for (i = 0; i < n; i++)
//		scanf("%d", &a[i]); 
//	for (k = 0; k < n - 1; k++) {
//
//
//
//		/*  对 n 个数排序 */
//
//		index = k;
//		for (i = 0; i < n - k - 1; i++)
//			if (a[i] > a[i + 1])    index = i;
//
//	}
//
//	printf("After sorted: "); for (i = 0; i < n; i++)
//
//
//
//		/*  输出 n 个数组元素的值 */
//
//		printf(" % d ", a[i]);
//	return 0;
//}

//int main()
//{
//	int hour;
//	float fee;
//	printf("please input hour , \n");
//	scanf("%d", &hour);
//	if (hour <= 10)
//		fee = 30;
//	else if (hour >= 10 && hour <= 50)
//		fee = 3 * hour;
//	else fee = hour * 2.5;
//	printf("The total fee is % f", fee);
//}


//int main()
//{
//	int    i;
//		long sum = 1;
//	for (i = 1; i <= 10; i = i + 1)
//		sum = sum * i;
//	printf("the sum of odd is : % ld", sum);
//}

//int main() {
//	int a, i, sum = 0;
//	float ave;
//	for (i = 0; i < 10; i++) {
//		scanf("%d", &a);
//		sum += a;
//	}
//	ave = (float)sum / 10;
//	printf("ave = %f\n", ave);
//}

//int main()
//{
//	int i, sum = 0;
//	for (i = 1; i < 1000; i = i + 2)
//		sum = sum + i;
//	printf("the sum of odd is : % d", sum);
//}
//int main() {
//	int i, t, n = 20;
//	float a = 2, b = 1, s = 0;
//	for (i = 1; i <= n; i++)
//	{
//		s = s + a / b;
//		t = a;
//		a = a + b;
//		b = t;
//	}
//	printf("sum=%6.2f", s);
//}
//
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int d = sqrt(a);
//	printf("%d", d);
//	return 0;
//}

//int main()
//{
//	char arr[2][4];
//	strcpy(arr[0], "you");
//	strcpy(arr[1], "me");
//	arr[0][3] = '&';
//	printf("%s \n", arr);
//	return 0;
//}

//#include <stdio.h>
//int main() {
//	int i = 1;
//	i = i ^ i;
//	printf("%d\n", i);
//	return 0;
//}
//void print(int a, char b, int c)
//{
//
//}
//int main()
//{
//	print(5, '#', 2);;
//	return 0;
//}

//int main(void)
//{
//	enum team { my, your = 9, his, her = his + 3 };
//
//	printf("%d %d %d %d\n", my, your, his, her);
//
//	return 0;
//}

//int main()
//{
//	int a[2] = { 0,1 };
//	int* p = a;
//	p += 1;
//	return 0;
//} 

//int main() {
//	int m, n;
//	scanf("%d %d", &m, &n);
//	int a[m][n];
//	for (int i = 0; i < m; i++)
//		for (int j = 0; j < n; j++)
//			scanf("%d", &a[i][j]);
//	for (int i = 0; i < n; i++) {
//		for (int j = 0; j < m; j++) {
//			printf("%d ", a[j][i]);
//		}
//		printf("\n");
//	}
//	return 0;
//}
/*int main()
{
	int x = 1, y = 1;
	int c = (!x++);
	int d = (0|| y--);
	int e = (1|| y--);
	printf("%d %d %d %d %d\n", c,d,e,x,y);
	return 0;
}*/
//'1''B'

//int main()
//{
//	char a, b;
//	a = getchar();
//	scanf("%d", &b);
//	a = a - 'A' + '0';
//	b = b * 2;
//	printf("%c %c\n", a, b);
//	return 0;
//}

//main() {
//	char a, b;
//	a = getchar();
//	scanf("%d", &b);
//	a = a - 'A' + '0';
//	b = b * 2;
//	printf("%c %c\n", a, b);
//}

//int main()
//{
//	int n = 0;
//	n = (6 * 4, n + 6, n * 2);
//	printf("%d\n", n);
//	return 0;
//}


//int main()
//{
//	int a = 0;
//	a = printf("Hello world!\n");
//	printf("\n%d\n", a);
//	return 0;
//}

//void Delay(unsigned int i)
//{
//	while (i--);
//}
//
//int main()
//{
//	{
//		typedef unsigned int uint32_t;
//
//#define waishe 0x40000000
//#define AHB (waishe + 0x18000)
//#define RCC_BASE (AHB + 0x9000)
//#define RCC ((RCC_TypeDef *)RCC_BASE)
//
//
//#define PERIPH_BASE           ((uint32_t)0x40000000)
//#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
//#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
//#define GPIOE_BASE            (APB2PERIPH_BASE + 0x1800)
//
//#define GPIOB         ((GPIO_TypeDef *) GPIOB_BASE)
//#define GPIOE         ((GPIO_TypeDef *) GPIOE_BASE)
//
//
//		typedef struct
//		{
//			volatile uint32_t CRL;
//			volatile uint32_t CRH;
//			volatile uint32_t IDR;
//			volatile uint32_t ODR;
//			volatile uint32_t BSRR;
//			volatile uint32_t BRR;
//			volatile uint32_t LCKR;
//		} GPIO_TypeDef;
//
//		typedef struct
//		{
//			volatile uint32_t CR;
//			volatile uint32_t CFGR;
//			volatile uint32_t CIR;
//			volatile uint32_t APB2RSTR;
//			volatile uint32_t APB1RSTR;
//			volatile uint32_t AHBENR;
//			volatile uint32_t APB2ENR;
//			volatile uint32_t APB1ENR;
//			volatile uint32_t BDCR;
//			volatile uint32_t CSR;
//		} RCC_TypeDef;
//
//		RCC->APB2ENR |= 0x48;
//	
//		GPIOB->CRL &= 0xFF0FFFFF;
//		GPIOB->CRL |= 0x00300000;
//	
//		GPIOE->CRL &= 0xFF0FFFFF;
//		GPIOE->CRL |= 0x00300000;
//	
//		GPIOB->ODR |= 0x20;
//		GPIOE->ODR |= 0x20;
//		while (1)
//		{
//	
//			GPIOB->ODR &= ~0x20;
//			GPIOE->ODR |= 0x20;
//			Delay(500 * 500);
//			GPIOB->ODR |= 0x20;
//			GPIOE->ODR &= ~0x20;
//			Delay(500 * 500);
//		}
//	}
//}

//int main()
//{
//	int arr[3] = { '\0' };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	int x = 0;
//	for (i = 0; i < sz; i++)
//		scanf("%d", &arr[i]);
//	for (i = 0; i < sz; i++)
//		for (x = 0; x < sz - i - 1; x++)
//			if (arr[x] < arr[x + 1])
//			{
//				int t = arr[x];
//				arr[x] = arr[x + 1];
//				arr[x + 1] = t;
//			}
//	for (i = 0; i < sz; i++)
//		printf("%d ", arr[i]);
//	return 0;
//}


//int main()
//{
//	int iq = 0;
//	int a = 0;
//	while (~scanf("%d %d", &iq,&a))
//	{
//		if (iq > 120)
//			printf("天才\n");
//	}
//	return 0;
//}

//int main()
//{
//	char ch1[] = "XXXXXXXXXX";
//	char ch2[] = "hello";
//	strcpy(ch1,ch2);
//	printf("%s\n", ch1);
//	printf("%s\n", ch2);
//
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	int ret = scanf("%d %d", &a, &b);
//	printf("a = %d\n",a);
//	printf("b = %d\n",b);
//	printf("ret = %d\n",ret);
//
//	return 0;
//}
//
//typedef struct 
//{
//	int a;
//	int b;
//}stu;
//
//int main()
//{
//	stu bb;
//	bb.a = 1 | 2;
//	printf("%d\n", bb.a);
//	return 0;
//}


//int main()
//{
//	int week = 0;
//	scanf("%d", &week);
//	if (week <= 5)
//	{
//		printf("周内\n");
//	}
//	else if (week >= 6)
//	{
//		printf("周末\n");
//		printf("休息\n");
//	}
//
//	return 0;
//}

//int main()
//{
//	int a = 3;
//	int b = 3;
//	if (a == 2)
//	{
//		if (b == 3)
//			printf("hello\n");
//		else
//			printf("hi\n");
//	}
//	return 0;
//}


//int main()
//{
//	int week = 0;
//	scanf("%d", &week);
//	switch (week)
//	{
//	case 1:
//		printf("星期一\n");
//	case 2:
//		printf("星期二\n");
//	case 3:
//		printf("星期三\n");
//	case 4:
//		printf("星期四\n");
//	case 5:
//		printf("星期五\n");
//	case 6:
//		printf("星期六\n");
//	case 7:
//		printf("星期日\n");
//	default:
//		printf("输入错误,请重新输入!\n");
//	}
//	return 0;
//}

//int main()
//{
//	int week = 0;
//	scanf("%d", &week);
//	switch (week)
//	{
//	case 1:
//	case 2:
//	case 3:
//	case 4:
//	case 5:
//		printf("周内\n");
//		break;
//	case 6:
//	case 7:
//		printf("周末\n");
//		break;
//	default:
//		printf("输入错误,请重新输入!\n");
//		break;//这个break可以省略,因为是最后一个分支,加不加break都会退出。
//	}
//	return 0;
//}

//int main()
//{
//	int index = 1;
//	while (index <= 10)
//	{
//		printf("%d ", index);
//		index++;
//	}
//	return 0;
//}


//int main()
//{
//	int index = 0;
//	for (index = 1; index <= 10; index++)
//	{
//		printf("%d ", index);
//	}
//	return 0;
//}

//int main()
//{
//	int index = 1;
//	do
//	{
//		printf("%d ", index);
//		index++;
//	} while (index <= 10);
//	return 0;
//}


//int main()
//{
//	int index = 1;
//	while (index <= 10)
//	{
//		if (index == 5)
//			continue;
//		printf("%d ", index);
//		index++;
//	}
//	return 0;
//}

//int main()
//{
//	int index = 0;
//	for (index = 1; index <= 10; index++)
//	{
//		if (index == 5)
//			break;
//		printf("%d ", index);
//	}
//	return 0;
//}

//int main()
//{
//	int index = 0;
//	for (index = 1; index <= 10; index++)
//	{
//		if (index == 5)
//			continue;
//		printf("%d ", index);
//	}
//	return 0;
//}

//int main()
//{
//	int index = 1;
//	do
//	{
//		if (index == 5)
//			break;
//		printf("%d ", index);
//		index++;
//	}while(index <= 10);
//	return 0;
//}

//int main()
//{
//	int index = 1;
//	do
//	{
//		if (index == 5)
//			continue;
//		printf("%d ", index);
//		index++;
//	} while (index <= 10);
//	return 0;
//}

//int main()
//{
//	int x = 0;//因数1
//	int y = 2;//因数2
//	for (x = 1; x <= 9; x++)
//	{
//		for (y = 1; y <= x; y++)
//		{
//			printf("%d * %d = %2d\t", y, x, y * x);
//		}
//		printf("\n");//换行
//	}
//	return 0;
//}

//猜数字游戏
//#include <stdlib.h>
//#include <time.h>
//void show()
//{
//	printf("******************************\n");
//	printf("************1.play************\n");
//	printf("************2.exit************\n");
//	printf("******************************\n");
//}
//
//void play()
//{
//	int count = rand()%100+1;
//	int value = 0;
//	while (1)
//	{
//		printf("请输入要猜的数字:>");
//		scanf("%d", &value);
//		if (value < count)
//			printf("猜小了\n");
//		else if (value > count)
//			printf("猜大了\n");
//		else if (value == count)
//		{
//			printf("恭喜你,猜对了!!!\n");
//			break;
//		}
//	}
//}
//
//int main()
//{
//	int index = 0;
//	srand((unsigned int)time(NULL));
//	while (index != 2)
//	{
//		show();
//		printf("请选择模式:>");
//		scanf("%d", &index);
//		switch(index)
//		{
//			case 1:
//				play();
//				break;
//			case 2:
//				printf("游戏已退出!!!");
//				break;
//			default:
//				printf("输入错误,请重新输入!!!");
//				break;
//		}
//	} 
//
//	return 0;
//}


//int main()
//{
//	unsigned long int index = 0;
//	for (index = 1; index <= 32767; index++)
//		printf("%d\t", index % 100 + 1);
//	return 0; 
//}

//int main()
//{
//	/*printf("%s\n", "王浩");
//	printf("哈哈%c", 10);
//	printf("哈哈%c", 10);*/
//	/*char arr[6] = { 'v','b','c','d','e','f' };
//	int* p = arr;
//	printf("%p\n", arr);
//	printf("%c\n", *p);
//	printf("\"");*/
//	/*printf("%c\n", '\x58');
//	printf("%c\n", '\x6a');*/
//	char arr[] = "c:\test\bit\117\test.c";
//	printf("%s\n", arr);
//	printf("%d\n", strlen("c:\test\bit\117\test.c"));
//	return 0;
//}

/*

*    *
 *  * 
  **  
  **  
 *  * 
*    *

*/


//int main() {
//	int index = 0;
//	while (scanf("%d", &index) != EOF)
//	{
//		int i = 0;
//		int j = 0;
//		for (i = 0; i < index; i++)
//		{
//			for (j = 0; j < index; j++)
//			{
//				if (i == j || i + j == index - 1)
//					printf("*");
//				else
//					printf(" ");
//			}
//			printf("\n");
//		}
//		
//	}
//
//	return 0;
//}

/*

* * * * *  [0][0] [0][1] [0][2] [0][3] [0][4]
*       *  [1][0] [1][1] [1][2] [1][3] [1][4]
*       *  [2][0] [2][1] [2][2] [2][3] [2][4]
*       *  [3][0] [3][1] [3][2] [3][3] [3][4]
* * * * *  [4][0] [4][1] [4][2] [4][3] [4][4]

*/

//int main()
//{
//	int index = 0;
//	while (scanf("%d", &index) != EOF)
//	{
//		int i = 0;
//		int j = 0;
//		for (i = 0; i < index; i++)
//		{
//			for (j = 0; j < index; j++)
//			{
//				if (i == 0 || i == index - 1 || j == 0 || j == index - 1)
//					printf("* ");
//				else
//					printf("  ");
//			}
//			printf("\n");
//		}
//	}
//	return 0;
//}


//int main() {
//	int m = 0;
//	int n = 0;
//	scanf("%d %d", &m, &n);
//	int arr[2][2];
//	//输入
//	int x = 0;
//	int y = 0;
//	for (x = 0; x < m; x++)
//		for (y = 0; y < n; y++)
//			scanf("%d", &arr[x][y]);
//	//排序
//	for (x = 0; x < m; x++)
//		for (y = 0; y < n; y++)
//			if (arr[x][y] > arr[x][y + 1])
//			{
//				arr[x][y] += arr[x][y + 1];
//				arr[x][y + 1] = arr[x][y] - arr[x][y + 1];
//				arr[x][y] -= arr[x][y + 1];
//			}
//	//打印
//	for (x = 0; x < m; x++)
//		for (y = 0; y < n; y++)
//			printf("%d ", arr[x][y]);
//	return 0;
//}

//int main()
//{
//	int arr[10] = {0};
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	int sum = 0;
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", &arr[i]);
//		sum += arr[i];
//	}
//	printf("%f\n", sum / 10.0);
//	return 0;
//}

//int main()
//{
//	int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int b[10] = { 11,12,13,14,15,16,17,18,19,20 };
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		//交换
//		a[i] += b[i];
//		b[i] = a[i] - b[i];
//		a[i] -= b[i];
//	}
//	//输出
//	for (i = 0; i < 10; i++)
//		printf("a[%d] = %d\n", i,a[i]);
//	printf("\n\n");
//	for (i = 0; i < 10; i++)
//		printf("b[%d] = %d\n",i, b[i]);
//	printf("\n\n");
//	return 0;
//}

//int main()
//{
//	if (' ' == ' ')
//		printf("哈哈");
//	return;
//}

//int bin_search(int arr[], int left, int right, int key)
//{
//	while (left <= right)
//	{
//		int middle = left + (right - left) / 2;
//		if (arr[middle] > key)
//			right = middle - 1;
//		else if (arr[middle] < key)
//			left = middle + 1;
//		else if (arr[middle] == key)
//			return middle;
//	}
//	return -1;
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
//	int value = 0;
//	int index = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int right = sz - 1;
//	printf("请输入要查找的值:>");
//	scanf("%d", &value);
//	index = bin_search(arr, left,right,value);
//	if (index == -1)
//		printf("没找到!!!\n");
//	else
//		printf("找到了,下标是:%d\n",index);
//	return 0;
//}

//void MultiplicationTable(int index)
//{
//	int x = 0;
//	int y = 0;
//	for (x = 1; x <= index; x++)
//	{
//		for (y = 1; y <= x; y++)
//			printf("%2d * %2d = %3d\t", y, x, y * x);
//		printf("\n");
//	}
//}
//
//int main()
//{
//	int index = 0;
//	scanf("%d", &index);
//	MultiplicationTable(index);
//
//	return 0;
//}

//int Is_leapyear(int value)
//{
//	if ((value % 4 == 0 && value % 100 != 0) || value % 400 == 0)
//		return 1;
//	return 0;
//}
//
//int main()
//{
//	int value = 0;
//	int index = 0;
//	scanf("%d", &value);
//	index = Is_leapyear(value);
//	if (index == 1)
//		printf("%d是闰年\n", value);
//	else
//		printf("%d不是闰年\n", value);
//	return 0;
//}

//#include <math.h>
//int is_prime(int i)
//{
//	int index = 0;
//	for (index = 2; index <= sqrt(i); index++)
//		if (i % index == 0)
//			return 0;
//	return 1;
//}
//
//int main()
//{
//	int i = 0;
//	int value = 0;
//	for (i = 101; i <= 200; i+=2)
//	{
//		value = is_prime(i);
//		if (value)
//			printf("%d ", i);
//	}
//	return 0;
//}

//void print(int* arr, int sz)
//{
//	int index = 0;
//	for (index = 0; index < sz; index++)
//		printf("%d ", arr[index]);
//	printf("\n");
//}
//
//void reverse(int* arr, int sz)
//{
//	int index = 0;
//	int value = 0;
//	int array[20] = {0};//int array[sz] = {0};临时数组
//	for (index = 0; index < sz; index++)
//		array[index] = arr[index];
//	for(index = 0,value = sz - 1;index < sz;index++,value --)
//		arr[index] = array[value];
//		
//}
//
//void init(int* arr, int sz, int x)
//{
//	int index = 0;
//	int value = 0;
//	for (index = 0; index < sz ; index++)
//		arr[index] = x;
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print(arr, sz);
//	reverse(arr, sz);
//	print(arr, sz);
//	init(arr, sz, 0);
//	print(arr, sz);
//}
//输入年月,输出天数

//int is_leap_year(int y)
//{
//	if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
//		return 1;
//	return 0;
//}
//
//int get_day(int y, int m)
//{
//	/*if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
//		return 31;
//	else if (m == 4 || m == 6 || m == 9 || m == 11)
//		return 30;
//	else if (m == 2 && is_leap_year(y))
//		return 29;
//	return 28;*/
//	//平年: 31 28 31 30 31 30 31 31 30 31 30 31
//	//闰年: 31 29 31 30 31 30 31 31 30 31 30 31
//	int arr[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//	int day = arr[m-1];
//	if (is_leap_year(y) && m == 2)
//		day++;
//	return day;
//}
//
//int main()
//{
//	int year = 0;
//	int month = 0;
//	int value = 0;
//	scanf("%d %d", &year, &month);
//	value = get_day(year,month);
//	printf("%d年%d月有%d天\n", year, month, value);
//	return 0;
//}

////字符串逆序
//
//void reveres_string(char* arr)
//{
//	int value = 0;
//	while (arr[value] != '\0')
//		value++;
//	int left = 0;
//	int right = value - 1;
//
//
//}
//
//int main()
//{
//	char arr[] = "abcdefg";
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	reveres_string(arr);
//	return 0;
//}



//int main()
//{
//	int i = 0;
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (i = 0; i <= 12; i++)
//	{
//		arr[i] = 0;
//		printf("hello bit\n");
//	}
//	return 0;
//}

//int main()
//{
//	int many = 0;
//	int value = 0;
//	int sum = 0;
//	printf("请输入多少钱:>");
//	scanf("%d", &many);
//	value = many;
//	sum = value;
//	while (value > 1)
//	{
//		value /= 2;
//		sum += value;
//	}
//	printf("%d\n", sum);
//	return 0;
//}


/*
			*             12
		  * * *           10
		* * * * *         8
	  * * * * * * *       6
	* * * * * * * * *     4
  * * * * * * * * * * *   2
* * * * * * * * * * * * * 0

*/

//int main()
//{
//	int i = 0;
//	int j = 0;
//	for (i = 1; i <= 13; i+=2)
//	{
//		for (j = 1; j <= 13 - i; j++)
//		{
//			printf(" ");
//		}
//		for (j = 1; j <= i; j++)
//		{
//			printf("* ");
//		}
//		printf("\n\n");
//	}
//	for (i = 13 - 2; i >= 1; i -= 2)
//	{
//		for (j = 1; j <= 13 - i; j++)
//		{
//			printf(" ");
//		}
//		for (j = 1; j <= i; j++)
//		{
//			printf("* ");
//		}
//		printf("\n\n");
//	}
//	return 0;
//}

//int main()
//{
//	int index = 1;
//	int sum = 0;
//	int value = 1;
//	scanf("%d", &value);
//	int i = 0;
//	for (i = 1; i <= 11111; i = i * 10 + 1)
//	{
//		index = value;
//		index *= i;
//		sum += index;
//	}
//	printf("%d\n", sum);
//	return 0;
//}

//int get_numberofitems(int number)
//{
//	int value = 0;
//	if (number == 0)
//		return 1;
//	while (number > 0)
//	{
//		number /= 10;
//		value++;
//	}
//	return value;	
//}
//
//int get_to_the_power(int index)
//{
//	return index * index * index;
//
//}
//
//int main()
//{
//	int i = 0;
//	int j = 0;
//	int sum = 0;
//	int individual = 0;
//	int index = 0;
//	for (i = 0; i <= 100000; i++)
//	{
//		index = i;
//		sum = 0;
//		for (j = 1; j <= get_numberofitems(i); j++)
//		{
//			individual = index % 10;
//			sum += get_to_the_power(individual);
//			index /= 10;
//		}
//		if (sum == i)
//			printf("%d ", i);
//	}
//	return 0;
//}



//int main()
//{
//	int a = 7;
//	int b = a << 1;
//	printf("%d\n", b);
//	return 0;
//}

//int Fun(int n)
//{
//	if (n == 5)
//		return 2;
//	else
//		return 2 * Fun(n + 1);
//}
//
//int main()
//{
//	int a = Fun(2);
//	printf("%d\n", a);
//	return 0;
//}

//int main()
//{
//	printf("%d\n\n", 6);
//	printf("%c\n\n", 'a');
//	printf("%s\n\n", "haha");
//	printf("%lf\n\n", 3.14);
//	return 0;
//}

//int main()
//{
//	printf("haha\n\n");
//	printf("%s\n\n", "haha");
//	printf("%d\n\n", sizeof("haha"));
//	
//	return 0;
//}


//int main()
//{
//	printf("%c\n", 'A');
//	printf("%c\n", 65);
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	for (i = 32; i <= 127; i++)
//		printf("%c ", i);
//	return 0;
//}

//int main()
//{
//	printf("%s\n", "qwert");
//	printf("qwert");
//	return 0;
//}

//int i;
//int main()
//{
//	i--;
//	if (i > sizeof(i))
//	{
//		printf(">\n");
//		printf("%d\n",i);
//		printf("%zd\n",sizeof(i));
//	}
//	else
//	{
//		printf("<\n");
//	}
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5 };
//	short* p = (short*)arr;
//	int i = 0;
//	for (i = 0; i < 4; i++)
//	{
//		*(p + i) = 0;
//	}
//
//	for (i = 0; i < 5; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//int main()
//{
//	char arr1[] = "qwerty";
//	char arr2[] = {'q','w','e','r','t','y'};
//	printf("%c\n", 0xcccccccc);
//	return 0;
//}
//
//int main()
//{
//	//11111111111111111111111110100000
//	//00000000000000000000000000101000
//	//11111111111111111111111111001000
//	//10000000000000000000000000110111
//	//10000000000000000000000000111000
//	char a = 160;
//	char b = 40;
//	unsigned char c = a + b;
//	char d = 150;
//	printf("%d\n", c);
//	printf("%d\n", d);
//	return 0;
//}

//int main()
//{
//	char arr1[] = "qwerty";
//	char arr2[] = { 'q','w','e','r','t','y','\0'};
//	printf("%s\n", arr1);
//	printf("%s\n", arr2);
//	printf("%s\n", "qwerty\0uiopas");
//	return 0;
//}

#include <string.h>
//int main()
//{
//	char arr1[] = "qwerty";
//	char arr2[] = { 'q','w','e','r','t','y','\0'};
//	printf("%d\n", strlen(arr1));
//	printf("%d\n", strlen(arr2));
//	return 0;
//}

//int main()
//{
//	printf("qwe\nasd");
//	return 0;
//}

//int main()
//{
//	printf("(are you ok\?\?)");
//	return 0;
//}

//int main()
//{
//	unsigned long pulArray[] = { 6,7,8,9,10 };
//	unsigned long* pulPtr;
//	pulPtr = pulArray;
//	*(pulPtr + 3) += 3;
//	printf("%d,%d\n", *pulPtr, *(pulPtr + 3));
//	return 0;
//}
//int main()
//{
//	char str[10000] = { '\0' };
//	gets(str);
//	for (int i = strlen(str) - 1; i >= 0; i--)
//		printf("%c", str[i]);
//	return 0;
//}

//int main()
//{
//	int a[11] = {1,2,3,4,5,6,7,8,9,10,11};
//	int b = 30;
//	int* const p = &a;
//	*p = 10;
//	p = &b;//err
//	printf("%d\n", *p);
//	return 0;
//}

//void LeftHandedCharacter(char str[],int* len,int NumberOfLaps)
//{
//	for (int i = 1; i <= NumberOfLaps; i++)
//	{
//		char tem = str[0];
//		for (int j = 0; j < *len; j++)
//		{
//			str[j]= str[j + 1];
//			str[*len] = tem;
//		}
//
//	}
//}
//
//int main()
//{
//	char str[5] = "ABCD";
//	int len = strlen(str);
//	LeftHandedCharacter(str, &len,2);
//	for (int i = 0; i < len; i++)
//		printf("%c ", str[i]);
//	return 0;
//}

//#include<assert.h>
//size_t my_strlen(const char* arr)
//{
//	size_t count = 0;
//	assert(arr);
//	while (*arr)
//	{
//		count++;
//		arr ++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[] = "abcdefg";
//	size_t len = my_strlen(arr);
//	printf("%zd\n", len);
//	return 0;
//}
//#include <assert.h>
//int my_strlen(const char* str)
//{
//	int count = 0;
//	assert(str);
//	while (*str)
//	{
//		count++;
//		str++;
//	}
//	return count;
//}
//int main()
//{
//	int len = my_strlen("abcdef");
//	printf("%d\n", len);
//	return 0;
//}

//void Substitution(int* arr, int len)
//{
//	for (int i = 0; i < len; i++)
//	{
//		if (arr[i] % 2 == 0)
//		{
//			for (int j = 0; j < len;j++)
//			{
//				if (arr[len - 1 - j] % 2 != 0)
//				{
//					int tem = arr[i];
//					arr[i] = arr[len - 1 - j];
//					arr[len - 1 - j] = tem;
//					break;
//				}
//			}
//		}
//	}
//}

//void Substitution(int* arr, int len)//bug
//{
//	for (int i = 0; i < len; i++)
//		for (int j = len - 1;j >= 0;j--)
//			if (arr[i] % 2 != 0 && arr[len - 1 - j] % 2 == 0)
//			{
//				int tem = arr[i];
//				arr[i] = arr[len - 1 - j];
//				arr[len - 1 - j] = tem;
//			}
//}
//
//int main()
//{
//	int arr[10] = { '\0' };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0; i < len; i++)
//		scanf("%d", &arr[i]);
//	Substitution(arr,len);
//	for (int i = 0; i < len; i++)
//		printf("%d ", arr[i]);
//	return 0;
//}

//int main()
//{
//	unsigned long pulArray[] = { 6,7,8,9,10 };
//	unsigned long* pulPtr;
//	pulPtr = pulArray;
//	*(pulPtr + 3) += 3;
//	printf("%d,%d\n", *pulPtr, *(pulPtr + 3));
//	return 0;
//}

//int main()
//{
//	printf("%c", '\127');
//	return 0;
//}

//int main()
//{
//	printf("%c", '\x3F');
//	return 0;
//}


//int main()
//{
//	printf("qwerbtyui\n");
//	printf("qwer\btyui\n");
//	printf("qwer\b\n");
//}


//int main()
//{
//	printf("%d\n", strlen("D:\test\basin\166\test.c"));
//
//	printf("%d\n", strlen("D:\test\basin\169\test.c"));
//	return 0;
//}

//int main()
//{
//	printf("ab\b\n");
//
//	printf("ab\b");
//
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int b = 20;
//	int c = a + b;//表达式语句
//	return 0;
//}

//int Add(int x, int y)
//{
//	int add = x + y;
//	return add;
//}
//
//int main()
//{
//	int add = Add(2, 4);//函数调用语句
//	printf("%d\n", add);//函数调用语句
//	return 0;
//}

//void print(int* arr, int sz)//函数的大括号中的代码也是复合语句
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *(arr + i));
//	}
//}
//
//int main()
//{
//	int arr[10] = { '\0' };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0; i < sz; i++)//for循环中大括号里面的语句就是复合语句
//	{
//		scanf("%d", &arr[i]);
//	}
//	print(arr,sz);
//	return 0;
//}

//int main()
//{
//	/*创建变量*/
//	int a = 10;
//	/*
//	打印变量a的值
//	使用printf库函数
//	*/
//	printf("%d\n"/*打印格式*/, a);
//	return 0;
//}

//int main()
//{
//	/*
//	int a = 10;
//	/*
//	int b = 20;
//	int c = a + b;
//	*/
//	printf("%d\n", c);
//	*/
//	return 0;
//}

//int main()
//{
//	//创建变量
//	int a = 10;
//	int b = 20;
//	int c = a + b;
//	printf("%d\n", c);//打印
//	return 0;
//}

//int main()
//{
//	printf("//abcd  /*abcd*/");
//	return 0;
//}

//void Reverse(char* str, int count)
//{
//	int left = 0;
//	int right = count - 1;
//	while (left < right)
//	{
//		char tem = *(str + left);
//		*(str + left) = *(str + right);
//		*(str + right) = tem;
//		left++;
//		right--;
//	}
//}
//
//int main()
//{
//	char str[1000] = { '\0' };
//	gets(str);
//	int count = strlen(str);
//	Reverse(str, count);
//	printf("%s\n", str);
//	return 0;
//}

//#include <stdio.h>
//#include <stdbool.h>
//int main()
//{
//	bool index = true;
//	if (index)
//	{
//		printf("hello");
//	}
//	return 0;
//}


//int main()
//{
//	printf("char的长度是%zd字节\n", sizeof(char));//使用sizeof计算char类型的长度
//	printf("short的长度是%zd字节\n", sizeof(short));//使用sizeof计算short类型的长度
//	printf("int的长度是%zd字节\n", sizeof(int));//使用sizeof计算int类型的长度
//	printf("long的长度是%zd字节\n", sizeof(long));//使用sizeof计算long类型的长度
//	printf("long long的长度是%zd字节\n", sizeof(long long));//使用sizeof计算long long类型的长度
//	printf("float的长度是%zd字节\n", sizeof(float));//使用sizeof计算float类型的长度
//	printf("double的长度是%zd字节\n", sizeof(double));//使用sizeof计算double类型的长度
//	printf("long double的长度是%zd字节\n", sizeof(long double));//使用sizeof计算long double类型的长度
//	return 0;
//}


//杨辉三角前10行
//int main()
//{
//	int arr[10][10] = { 0 };
//	for (int i = 0; i < 10; i++)
//	{
//		arr[i][0] = 1;
//		arr[i][i] = 1;
//	}
//	for (int i = 2; i < 10; i++)
//		for (int j = 1; j < 10; j++)
//			arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
//	for (int i = 0; i < 10; i++)
//	{
//		for (int j = 0; j <= i; j++)
//			printf("%3d ", arr[i][j]);
//		printf("\n");
//	}
//	return 0;
//}


//int main()
//{
//	int a = 10;
//	printf("%zd\n", sizeof(int));
//	printf("%zd\n", sizeof(a));
//	printf("%zd\n", sizeof a);
//	return 0;
//}

//int main()
//{
//	int a = 1;
//	printf("%d\n", a);
//	printf("%zd\n", sizeof(int));
//	return 0;
//}

//#include <stdbool.h>
//int main()
//{
//	printf("%zd\n", sizeof(_Bool));
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	short s = 2;
//	int b = 10;
//	printf("%zd\n", sizeof(s = b + 1));
//	printf("s = %d\n", s);
//	return 0;
//}

//int main()
//{
//	char str[20] = { '\0' };
//	gets(str);
//	printf("%s\n", str);
//	return 0;
//}

#include <limits.h>

//int main()
//{
//	//signed int ---> 表示有符号的int
//	//比如说我想表示温度,温度有零上多少度,零下多少度,也就是有正数也有负数,
//	//这样的变量我们可以使用signed修饰
//
//	signed int temperature = 20;
//	//int temperature = 20;//可以省略signed
//	temperature = -2;
//
//	//unsigned int ---> 表示无符号的int
//	//比如说表示学生,学生只有正数,没有负数,不存在说有-2个学生,所以这个时候
//	//我们的student变量要用unsigned修饰
//	unsigned int student = 10;
//	student = 20;
//	return 0;
//}

/*
int 等价于 signed int  是有符号的int
对于有符号的打印应该使用%d
对于无符号的打印应该使用%u
*/

//int main()
//{
//	/*
//	int 等价于 signed int  是有符号的int
//	对于有符号的打印应该使用%d
//	*/
//	int value = -2;
//	printf("%d\n", value);
//
//	//对于无符号的打印应该使用%u
//	unsigned int index = 10;
//	printf("%u\n", index);
//
//	//对于无符号的打印也可以使用%d
//	unsigned int count = 5;
//	printf("%d\n", index);
//
//	return 0;
//}

//int main()
//{
//	int value = -10;
//	printf("%u\n", value);
//	return 0;
//}
//struct Test
//{
//
//	int Num;
//	char* pcName;
//	short sDate;
//	char cha[2];
//	short sBa[4];
//}*p = (struct Test*)0x100000;
//int main()
//{
//	
//	
//		printf("%p\n", p + 0x1);
//		printf("%p\n", (unsigned long)p + 0x1);
//		printf("%p\n", (unsigned int*)p + 0x1);
//		return 0;
//	
//	
//}

//#include <stdio.h>
//int main()
//{
//	int a[3][2] = { (0, 1), (2, 3), (4, 5) };
//	int* p;
//	p = a[0];
//	printf("%d", p[0]);
//	return 0;
//}

//int main()
//{
//	int index = 30;
//	//在内存中申请4个字节的空间用来存放10这个数值,为什么是4个字节呢?
//	//因为int就是4个字节的数据类型。
//	return 0;
//}

//int main()
//{
//	int index = 30;
//	//&index;//&:是取地址操作符,取出变量index的地址。
//	printf("%p\n", &index);//%p是专门用来打印地址的。
//	return 0;
//}

//模拟实现strlen

//#include <assert.h>
//int my_strlen_counter(char* arr)//计时器方式
//{
//	assert(arr != NULL);
//	int count = 0;
//	while (*arr)
//	{
//		count++;
//		arr++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[100] = { '\0' };
//	gets(arr);
//	printf("%d\n", my_strlen_counter(arr));
//	return 0;
//}

//int main()
//{
//	int array1[3] = { 0 };
//	array1[0] = 10;
//	array1[1] = 20;
//	array1[2] = 30;
//	int array2[5] = { 1,2,3,4,5 };
//	array2[0] = 100;
//	array2[1] = 200;
//	int* p = array2;
//	//array1 = p;
//	NULL;
//	return 0;
//}

//#include <stdbool.h>//布尔类型要包含此头文件
//int main()
//{
//	char ch = 'w';//创建字符型的变量ch并赋值为w
//	int age = 20;//创建整型的变量age并赋值为20
//	double pai = 3.14;//创建双精度的变量pai并赋值为3.14
//	bool flag = true;//创建布尔类型的flag并赋值为true
//	return 0;
//}

//int main()
//{
//	unsigned int age = 20;//初始化
//	age = 40;//赋值
//	printf("%u\n", age);
//	return 0;
//}

//int main()
//{
//	float a = 3.14;
//	float b = 3.14f;
//	double c = 3.14;
//	return 0;
//}

//#include <stdio.h>
//
//int overall = 100;//全局变量
//
//int main()
//{
//	int local = 10;//局部变量
//	printf("%d\n", local);
//	printf("%d\n", overall);
//	return 0;
//}

//#include <stdio.h>
//
//int index = 100;
//
//int main()
//{
//	int index = 10;
//	printf("%d\n", index);
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//	{
//		int index = 10;
//	}
//	printf("%d\n", index);
//	return 0;
//}

//int main()
//{
//	int a = 0x11223344;
//	char* pc = (char*)&a;
//	*pc = 0;
//	printf("%x\n", a);
//	return 0;
//}

//判断大小端
//#include <stdio.h>
//int main()
//{
//	int index = 1;
//	if (*(char*)&index == 1)
//		printf("小端\n");
//	else
//		printf("大端\n");
//	return 0;
//}

//struct stu
//{
//	int num;
//	char name[10];
//	int age;
//};
//
//void fun(struct stu* p)
//{
//	printf("%s\n", (*p).name);
//	return;
//}
//
//int main()
//{
//	struct stu students[3] = { {9801,"zhang",20},
//							 {9802,"wang",19},
//					{9803,"zhao",18} };
//	fun(students + 1);
//	return 0;
//}


//int main()
//{
//	unsigned char puc[4];
//	struct tagPIM
//	{
//		unsigned char ucPim1;
//		unsigned char ucData0 : 1;
//		unsigned char ucData1 : 2;
//		unsigned char ucData2 : 3;
//	}*pstPimData;
//	pstPimData = (struct tagPIM*)puc;
//	memset(puc, 0, 4);
//	pstPimData->ucPim1 = 2;
//	pstPimData->ucData0 = 3;
//	pstPimData->ucData1 = 4;
//	pstPimData->ucData2 = 5;
//	printf("%02x %02x %02x %02x\n", puc[0], puc[1], puc[2], puc[3]);
//	return 0;
//}

//#include <stdio.h>
//
//int main() {
//	int n = 0;
//	int del = 0;
//	int del_value = 0;
//	int x = 0;
//	int flag = 0;
//	scanf("%d", &n);
//	int arr[10];
//	for (int i = 0; i < n; i++)
//		scanf("%d", &arr[i]);
//	scanf("%d", &del);
//	while ( x < n)
//	{
//		if (arr[x] == del)
//		{
//			flag = 0;
//			if (arr[x + 1] == del && arr[x] == del)
//				flag = 1;
//			for (int j = x; j < n; j++)
//			{
//				arr[j] = arr[j + 1];
//			}
//			del_value++;
//		}
//		
//		if (flag == 0)
//			x++;
//
//	}
//	for (int i = 0; i < n - del_value; i++)
//		printf("%d ", arr[i]);
//	return 0;
//}

//int main()
//{
//	int index = 10;
//	printf("%p\n", &index);
//	int* p = &index;//p是一个变量,这个变量p是用来存放地址(指针)的,p是指针变量。
//	return 0;
//}

//int main()
//{
//	int index = 10;
//	int* p = &index;
//	printf("%d\n", index);
//	*p = 20;//* -> 解引用操作符(间接访问操作符) 通过指针变量将index改成20
//	printf("%d\n", index);
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int* p = &a;//取出a的地址,放到变量p里面
//	printf("%zd\n", sizeof(p));
//	return 0;
//}

//int main()
//{
//	printf("%zd\n", sizeof(char*));
//	printf("%zd\n", sizeof(short*));
//	printf("%zd\n", sizeof(int*));
//	printf("%zd\n", sizeof(double*));
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int* p = &a;
//	printf("%p\n", p);
//	return 0;
//}
//int main()
//{
//	char a = 'w';
//	char* p = &a;
//	printf("%p\n", p);
//	return 0;
//}

//int main()
//{
//	int a = 0x11223344;
//	char* p = &a;
//	*p = 0;
//	return 0;
//}


//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	char* pc = &a;
//	printf("&a = %p\n", &a);
//	printf("pa = %p\n", pa);
//	printf("pc = %p\n", pc);
//	printf("-------------------------------\n");
//	printf("&a+1 = %p\n", &a+1);
//	printf("pa+1 = %p\n", pa+1);
//	printf("pc+1 = %p\n", pc+1);
//	return 0;
//}


//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	char* pc = &a;
//	return 0;
//}


//int main()
//{
//	int a = 10;
//	char ch = 'w';
//	void* p1 = &a;
//	void* p2 = &ch;
//	p1 + 1;
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	a = 20;//a是可以修改的
//	const int b = 30;
//	b = 40;//b是不能被修改的
//	return 0;
//}

//int main()
//{
//	//int arr[10] = { 0 };//创建一个为10个元素大小的整型数组
//	const int n = 10;
//	//C99之前不支持边长数组,数组大小是需要常量或常量表达式来指定的,不能是变量。
//	int arr[n];//n是变量,所以不行
//	return 0;
//}

//int main()
//{
//	const a = 10;
//	printf("%d\n", a);
//	int* p = &a;
//	*p = 20;
//	printf("%d\n", a);
//	return 0;
//}

//int main()
//{
//	int a = 10;//创建一个变量a
//	int b = 20;//创建一个变量b
//
//	int* p = &a;//取出a的地址放到指针变量p里面
//	*p = 100;//通过指针变量修改a的值
//
//	p = &b;//取出b的地址放到指针变量p里面,p不在指向a,现在指向b
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int b = 20;
//
//	int* const p = &a;
//	*p = 100;//ok
//
//	p = &b;//err
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int b = 20;
//
//	int const * const p = &a;
//	*p = 100;//ok
//
//	p = &b;//err
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//产生0~9的下标
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[0];//&arr[0]取出第一个元素的地址,arr也表示首元素的地址,两者都可以
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[sz-1];
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *p);
//		p--;
//	}
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//指针-指针的绝对值是指针和指针之间元素的个数
//	printf("%d\n", &arr[sz - 1] - &arr[0]);
//	printf("%d\n", &arr[0] - &arr[sz - 1]);
//	return 0;
//}


#include <string.h>

//int main()
//{
//	char ch[] = "abcdefg";//字符串的末尾有\0，其实ch里面放的是a b c d e f g \0
//	size_t index = strlen(ch);//strlen的返回值是size_t类型的值,因为字符串的长度没有负数
//	printf("%d\n", index);
//	return 0;
//}

//size_t my_strlen(char* ch)
//{
//	char* start = ch;
//	char* end = ch;
//	while (*end != '\0')
//		end++;
//	return end - start;
//}
//
//int main()
//{
//	char ch[] = "abcdefg";
//	printf("%d\n", my_strlen(ch));//数组名是数组首元素的地址 ch == &ch[0] 这两个等价
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[0];
//	while (p < &arr[sz])
//	{
//		printf("%d ",*p);
//		p++;
//	}
//	return 0;
//}

//int main()
//{
//	int* p;//局部变量指针未初始化,默认为随机值
//	*p = 20;//对未知的地址解引用
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int* p = &arr[0];
//	for (int i = 0; i <= 10; i++)
//	{
//		*p = i;
//		p++;
//	}
//	return 0;
//}

//int* test()
//{
//	int a = 10;
//	return &a;
//}
//
//int main()
//{
//	int* p = test();
//	printf("%d\n", *p);
//	return 0;
//}


//int main()
//{
//	int a = 20;
//	int* p1 = &a;//给一个明确的地址
//
//	int* p2 = NULL;//不知道给什么值就给NULL,最起码知道p2指向的是哪个空间,
//	//如果不赋值,p2指向哪块空间都不知道,更加危险。
//	*p2 = 200;//空指针访问程序会崩溃
//
//	return 0;
//}

//int main()
//{
//	int* p = NULL;
//	if (p != NULL)
//	{
//		*p = 10;
//	}
//	return 0;
//}

//#define NDEBUG
//#include <assert.h>
//int main()
//{
//	int* p = NULL;
//	assert(p != NULL);
//	return 0;
//}


//#include <assert.h>
//size_t my_strlen(char const* ch)//参数ch指向的字符串不希望被修改
//{
//	size_t count = 0;
//	assert(ch);//检测指针ch是否有效
//	while (*ch)
//	{
//		count++;
//		ch++;
//	}
//	return count;
//}
//int main()
//{
//	char ch[] = "abcdef=g";
//	size_t len = my_strlen(ch);
//	printf("%d\n", len);
//	return 0;
//}


//void Swap(int x, int y)
//{
//	int z = 0;
//	z = x;
//	x = y;
//	y = z;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("交换前:a = %d b = %d\n", a, b);
//	Swap(a, b);
//	printf("交换后:a = %d b = %d\n", a, b);
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	a = 20;
//
//	int* p = &a;
//	*p = 30;
//	return 0;
//}


//void Swap(int* x, int* y)
//{
//	int z = 0;
//	z = *x;
//	*x = *y;
//	*y = z;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("交换前:a = %d b = %d\n", a, b);
//	Swap(&a, &b);//传址调用
//	printf("交换后:a = %d b = %d\n", a, b);
//	return 0;
//}

//#include <ctype.h>
//int main()
//{
//	int ret = islower('A');
//	printf("%d\n", ret);
//
//	ret = islower('a');
//	printf("%d\n", ret);
//
//	ret = islower('0');
//	printf("%d\n", ret);
//
//	return 0;
//}

//#include <ctype.h>
//int main()
//{
//	char ch[] = "aBcDeFg";
//	char* p = ch;
//	while (*p)
//	{
//		if (islower(*p))
//			*p -= 32;
//		p++;
//	}
//	printf("%s\n", ch);
//	return 0;
//}

//#include <ctype.h>
//int main()
//{
//	char ch[] = "aBcDeFg";
//	char* p = ch;
//	while (*p)
//	{
//		if (islower(*p))
//			*p = toupper(*p);
//		p++;
//	}
//	printf("%s\n", ch);
//	return 0;
//}

//#include <ctype.h>
//int main()
//{
//	char ch = toupper('a');
//	printf("%c\n", ch);
//
//	ch = tolower('A');
//	printf("%c\n", ch);
//
//	return 0;
//}

//#include <string.h>
//
//int main()
//{
//	char ch[] = "abcdefg";//字符串默认后面有'\0'
//	size_t len = strlen(ch);
//	printf("%zd\n", len);
//	return 0;
//}

//#include <string.h>
//
//int main()
//{
//	if (strlen("abc") - strlen("abcde") > 0)
//	{
//		printf(">\n");
//	}
//	else
//	{
//		printf("<=\n");
//	}
//	size_t n;
//	return 0;
//}


//#include <string.h>
//
//int main()
//{
//	if (strlen("abc") > strlen("abcde"))
//	{
//		printf(">\n");
//	}
//	else
//	{
//		printf("<=\n");
//	}
//	size_t n;
//	return 0;
//}



//#include <assert.h>
//size_t my_strlen(const char* ch)//const放在*左边,限制的是*ch,防止*ch被修改
//{
//	size_t count = 0;
//	assert(ch != NULL);//判断指针有效性
//	while (*ch != '\0')
//	{
//		count++;//记录字符串的个数
//		ch++;
//	}
//	return count;
//}
//int main()
//{
//	char ch[] = "abcdefg";
//	size_t len = my_strlen(ch);
//	printf("%zd\n", len);
//	return 0;
//}


//#include <assert.h>
//size_t my_strlen(const char* ch)//const放在*左边,限制的是*ch,防止*ch被修改
//{
//	char* end = ch;
//	assert(ch != NULL);//判断指针有效性
//	while (*end)
//		end++;
//	return end - ch;//指针减指针
//}
//int main()
//{
//	char ch[] = "abcdefg";
//	size_t len = my_strlen(ch);
//	printf("%zd\n", len);
//	return 0;
//}


//#include <assert.h>
//size_t my_strlen(const char* ch)//const放在*左边,限制的是*ch,防止*ch被修改
//{
//	assert(ch != NULL);
//	if (*ch)
//		return 1 + my_strlen(ch + 1);
//	else
//		return 0;
//}
//int main()
//{
//	char ch[] = "abcdefg";
//	size_t len = my_strlen(ch);
//	printf("%zd\n", len);
//	return 0;
//}

//#include <string.h>
//
//int main()
//{
//	char arr1[] = "hello C";
//	char* p = "xxxxxxxxxxxxxxxxxxxxxxxxx";//常量字符串,不能被修改
//	strcpy(p, arr1);
//	printf("%s\n", p);
//	return 0;
//}

//字符串拷贝函数的模拟实现

#include <assert.h>
//char* my_strcpy(char* dest,const char* src)//模拟实现,与库函数参数一致,顺序一致
//{
//	assert(dest && src);//检查指针有效性
//	char* p = dest;
//	while (*dest++ = *src++);
//	//拷贝过去字符后,判断表达式的值,当'\0'拷贝过去之后,判断为假,停止循环
//	return p;//返回目标空间的起始地址
//}
//
//int main()
//{
//	char arr1[] = "abcdefg";
//	char arr2[20] = { 0 };
//	//其实该函数不加返回值也是可以的,操作的是地址,
//	//但是为了实现链式访问,加上返回值更好一些。
//	printf("%s\n", my_strcpy(arr2, arr1));
//	printf("%s\n", arr2);
//	return 0;
//}

//#include <string.h>
//int main()
//{
//	char arr1[20] = "hello ";
//	char arr2[] = "world";
//	strcat(arr1, arr2);
//	printf("%s\n", arr1);
//	return 0;
//}


//#include <assert.h>
//char* my_strcat(char* destination, const char* source)//源头不希望被修改,加上const限制
//{
//	assert(destination && source);//判断指针有效性
//	char* p = destination;
//	//1.找目标空间的'\0'
//	while (*destination)
//		destination++;
//	//2.追加
//	while (*destination++ = *source++);
//	return p;
//}
//
//int main()
//{
//	char arr1[20] = "hello \0xxxxxxxxxx";
//	char arr2[] = "world";
//	my_strcat(arr1, arr2);
//	printf("%s\n", arr1);
//	return 0;
//}


//#include <assert.h>
//char* my_strcat(char* destination, const char* source)
//{
//	assert(destination && source);
//	char* p = destination;
//	while (*destination)
//		destination++;
//	while (*destination++ = *source++);
//	return p;
//}
//
//int main()
//{
//	char ch[20] = "abc";
//	strcat(ch, ch);
//	printf("%s\n", ch);
//	return 0;
//}

//int main()
//{
//	char arr1[] = "abcdq";
//	char arr2[] = "abcdefg";
//	int index = strcmp(arr1, arr2);
//	printf("%d\n", index);
//	return 0;
//}

//int main()
//{
//	char arr1[] = "abcdq";
//	char arr2[] = "abcdefg";
//	int index = strcmp(arr1, arr2);
//	if (index > 0)
//	{
//		printf(">\n");
//	}
//	else
//	{
//		printf("<=\n");
//	}
//	return 0;
//}

//#include <assert.h>
//#include <stdio.h>
//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//			return 0;
//		str1++;
//		str2++;
//	}
//	return *str1 - *str2;
//}
//int main()
//{
//	char arr1[] = "abcdefg";
//	char arr2[] = "abcdq";
//	int index = my_strcmp(arr1, arr2);
//	printf("%d\n", index);
//	return 0;
//}

//strncpy

//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[20] = "xxxxxxxxxx";
//	strncpy(arr2, arr1,3);
//	printf("%s\n", arr2);
//	return 0;
//}

//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[20] = "xxxxxxxxxx";
//	strncpy(arr2, arr1, 8);
//	printf("%s\n", arr2);
//	return 0;
//}

//int main()
//{
//	char arr1[20] = "abcdef\0nnnnnnnnnnnn";
//	char arr2[20] = "xxxxxxxxxx";
//	strncat(arr1, arr2, 3);
//	printf("%s\n", arr1);
//	return 0;
//}


//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[20] = "ab";
//	int index = strncmp(arr1, arr2, 4);
//	printf("%d\n", index);
//	return 0;
//}

//int main()
//{
//	//一个十六进制位表示四个二进制位,
//	//两个十六进制表示八个二进制位,也就是一个字节
//	//0x11223344刚好是四个字节,
//	//放到int类型的n里面,刚好填满。
//	int a = 0x11223344;
//	return 0;
//}

//int main()
//{
//	int a = 1;
//	char* p = &a;
//	if (*p == 1)
//		printf("小端\n");
//	else
//		printf("大端\n");
//	return 0;
//}



//#include <stdio.h>
//int main()
//{
//	/*
//	-1
//	10000000 00000000 00000000 00000001  -1的原码
//	11111111 11111111 11111111 11111110  符号位不变,其它位取反得到反码
//	11111111 11111111 11111111 11111111  反码+1得到补码,数据在内存中存的是补码
//	
//	*/
//
//	//char是一个字节八个位,意思就是只能存八个位,所以取-1补码的低八位
//	//11111111  -  a里面存放的就是这低八位,%d是打印有符号整数,打印整数肯定是32位,
//	//但是a肯定不够32位,所以要整型提升,提升的时候要看a的类型,
//	//是无符号的char,所以最高位是符号位
//	//11111111 11111111 11111111 11111111  - a整型提升之后,这是补码
//	//10000000 00000000 00000000 00000000  最高位不变,其它位取反得到反码
//	//10000000 00000000 00000000 00000001  反码+1得到原码,打印出来就是-1,最高位1表示负数
//
//	char a = -1;//所以对于a里面放的是-1,补码截断取八个比特位,然后整型提升,算出原码打印出来还是-1
//
//	signed char b = -1;//b也是有符号的char,和上面的a是一样的
//
//	// 11111111 11111111 11111111 11111111  -  -1的补码
//	// 11111111  -  c是char类型,取-1补码的低八位
//	// 00000000 00000000 00000000 11111111  -  %d打印整型,所以要整型提升,
//	//但是char是无符号的char，有符号的char最高位补符号位,无符号的char最高位补0
//	//%d打印整数,看到最高位是0,就认为这是正数,正数的原码,反码,补码一样,
//	//所以还是00000000 00000000 00000000 11111111  -  得到的原码转成10进制就是255
//
//	unsigned char c = -1;//对于c来说,c里面存放的是-1,补码截断取八个比特位,然后整型提升,因为是
//	//无符号的,所以最高位补0,然后%d打印整数,最高位是0,就认为这是正数,正数的原反补都一样
//
//	//整型提升看是有符号还是无符号的char,如果是有符号的最高位补符号位,如果是无符号的,最高位补0
//
//	printf("a=%d,b=%d,c=%d", a, b, c);
//	//%d 打印有符号整数
//	//%u 打印无符号整数
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	/*
//	-128
//	10000000 00000000 00000000 10000000 - 原码
//	10000000 00000000 00000000 01111111 - 符号位不变,其它位取反得到反码
//	10000000 00000000 00000000 10000000 - 反码+1得到补码
//	*/
//
//	//10000000  char是八位,取-128补码的低八位
//	//11111111 11111111 11111111 10000000  -  整型提升,char是有符号的,所以补符号位的1
//	//11111111 11111111 11111111 10000000 - %u打印,会认为这是无符号的整数,
//	//无符号整数的原码反码补码都一样,所以还是这32个位,这是一个非常大的数字
//	char a = -128;
//
//	printf("%u\n", a);
//	//%u打印无符号的整数,在%u的角度,内存中存储的是无符号的整数。
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	/*
//	128
//	00000000 00000000 00000000 10000000 - 原码 - 反码 - 补码
//	*/
//
//	//10000000 - char类型的,截最低位的八位
//	//11111111 11111111 11111111 10000000 - char是有符号的,补符号位的1
//	//11111111 11111111 11111111 10000000 - %u打印,认为这是无符号的整数,
//	//无符号整数的原码反码补码都一样,所以还是这32个位,这是一个非常大的数字
//	char a = 128;
//
//	printf("%u\n", a);
//	//%u打印无符号的整数,在%u的角度,内存中存储的是无符号的整数。
//	return 0;
//}

//int main()
//{
//	unsigned int a = -10;
//	printf("%d\n", a);
//	printf("%u\n", a);
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//	char a[1000];
//	int i;
//	for (i = 0; i < 1000; i++)
//	{
//		a[i] = -1 - i;
//	}
//	printf("%d", strlen(a));
//	return 0;
//}

//#include <stdio.h>
//unsigned char i = 0;
//int main()
//{
//	for (i = 0; i <= 255; i++)
//	{
//		printf("hello world\n");
//	}
//	return 0;
//}


//#include <stdio.h>
//#include <Windows.h>
//int main()
//{
//	unsigned int i;
//	for (i = 9; i >= 0; i--)
//	{
//		printf("%u\n", i);
//		Sleep(1000);
//	}
//	return 0;
//}

//#include <stdio.h>
////X86环境 ⼩端字节序
//int main()
//{
//	int a[4] = { 1, 2, 3, 4 };
//	int* ptr1 = (int*)(&a + 1);
//	int* ptr2 = (int*)((int)a + 1);
//	printf("%#x,%#x\n", ptr1[-1], *ptr2);
//	printf("0x%x,0x%x\n", ptr1[-1], *ptr2);
//	return 0;
//}

//int main()
//{
//	float a = 5.5f;
//	//S： 0  M：1.011  E：2
//
//	//0 10000001 01100000000000000000000
//	//0100 0000 1011 0000 0000 0000 0000 0000
//	//0x 40 b0 00 00 - 大端
//	//0x 00 00 b0 40 - 小端
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int n = 9;
//	//00000000 00000000 00000000 00001001 - 9是正数,原反补一样
//	float* pFloat = (float*)&n;
//	printf("n的值为：%d\n", n);
//	printf("*pFloat的值为：%f\n", *pFloat);
//
//
//
//	*pFloat = 9.0;
//	printf("num的值为：%d\n", n);
//	printf("*pFloat的值为：%f\n", *pFloat);
//	return 0;
//}

//int main()
//{
//	unsigned int a = 0x1234;
//	return 0;
//}

